#ifndef __S3C6410_H264_ENCODER_FILTER_H__
#define __S3C6410_H264_ENCODER_FILTER_H__

#include "TransformFilter.h"
#include "MediaTask.h"
#include "InputPin.h"
#include "OutputPin.h"
#include "MediaFramePool.h"

#include "Poco/NotificationQueue.h"

namespace cm_media
{

    class S3C6410H264EncoderInputPin: public InputPin
    {
    public:
        int receive(ByteBuffer* p_data);

    };

    class S3C6410H264EncoderFilter: public TransformFilter, public MediaTask
    {
    public:
        S3C6410H264EncoderFilter();
        ~S3C6410H264EncoderFilter();

        int setup();
        int teardown();

        int enqueueBuffer(ByteBuffer* p_buffer);
        void run();

    protected:
        InputPin* m_inputPin;
        OutputPin* m_outputPin;

        MediaFramePool* m_pool;
        bool m_stopFlag;

        NotificationQueue m_frameQ;
    };
}

#endif